package com.bh.order.mapper;

import com.bh.common.basemapper.RootMapper;
import com.bh.order.domain.JcLed;
import com.bh.order.vo.JcLedVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * 分段订单Mapper接口
 *
 * @author slx
 * @date 2023-04-24
 */
@Mapper
public interface JcLedMapper extends RootMapper<JcLed> {

    /**
     * 查询分段订单列表
     *
     * @param jcLed 分段订单
     * @return 分段订单集合
     */
    public List<JcLed> selectJcLedList(JcLed jcLed);
 /**
     * 查询分段订单列表
     *
     * @param
     * @return 分段订单集合
     */
    public List<JcLed> selectJcLedListByJcDispatchId(@Param("jcDispatchId") Long jcDispatchId);

    /**
     * 查询分段订单列表
     *
     * @param jcLed 分段订单
     * @return 分段订单集合
     */
    public List<JcLedVO> selectJcLedVoList(JcLedVO jcLed);

    /**
     * 查询分段订单列表
     *
     * @param jcLed 分段订单
     * @return 分段订单集合
     */
    public List<JcLedVO> selectInventoryLedList(JcLedVO jcLed);

    /**
     * 查询分段订单列表
     *
     * @param jcLed 分段订单
     * @return 分段订单集合
     */
    public List<JcLedVO> getJcLedList(JcLedVO jcLed);

    /**
     * 查询分段订单列表
     *
     * @param jcLed 分段订单
     * @return 分段订单集合
     */
    public List<JcLedVO> getOrderQS(JcLedVO jcLed);

    /**
     * 查询分段订单列表
     *
     * @param jcLed 分段订单
     * @return 分段订单集合
     */
    public List<JcLed> selectJcLedListByShipmentId(@Param("shipmentId") Long shipmentId);


    /**
     * 查询分段订单列表
     *
     * @param jcLed 分段订单
     * @return 分段订单集合
     */
    public List<JcLedVO> selectJcLedVOListByShipmentId(@Param("shipmentId") Long shipmentId);

    /**
     * 查询分段订单列表
     *
     * @param jcLed 分段订单
     * @return 分段订单集合
     */
    public List<JcLed> selectJcLedListByOrderId(@Param("jcOrderId") Long jcOrderId);


    /**
     * 查询分段订单列表
     * @param orgId
     * @return
     */
    public Integer selectJcLedListByOrgId(@Param("orgId") Long orgId, @Param("shipmentId") Long shipmentId);

    /**
     * 查询分段订单列表
     * @param jcOrderIds
     * @return
     */
    public List<JcLed> selectJcLedListByOrderIds(@Param("jcOrderIds")List<String> jcOrderIds);


    /**
     * 查询分段订单列表
     * @param prescoId
     * @return
     */
    public List<JcLed> selectByPrescoId(@Param("prescoId") Long prescoId);


    /**
     * 查询出订单下的分段订单是否已经全部运输完毕
     *
     * @param jcOrderIds
     * @return
     */
    public List<String> selectTransportFinishedJcLedListByOrderIds(@Param("jcOrderIds") Set<Long> jcOrderIds);

    /**
     * 查询分段订单列表
     *
     * @param jcOrderId 分段订单
     * @return 分段订单集合
     */
    public Integer selectJcLedListByJcOrderId(@Param("jcOrderId") Long jcOrderId);

    /**
     * 外包加载货品明细
     * @param shipmentId
     * @return
     */
    public List<JcLed> getWbStowageByShipmentId(@Param("shipmentId") Long shipmentId);

    /**
     * 外包加载货品明细
     * @param shipmentId
     * @return
     */
    public List<JcLed> getStowageByShipmentId(@Param("shipmentId") Long shipmentId);

    /**
     * 外包加载货品明细
     * @param orgId
     * @return
     */
    public List<JcLed> getDispatchNotStowage(@Param("orgId")Long orgId);

   /**
     * 外包加载货品明细
    *
     * @return
     */
    public List<JcLed> getDispatchStowage(@Param("dispatchId")Long dispatchId);

   /**
    * 加载货品
    * @param ledIds
    * @return
    */
   public int addDispatchOrder(Long[] ledIds);

    /**
     * 查询分段订单收发货方列表 status not in (5,9,10,11)
     * @param shipmentId
     * @return
     */
    public List<JcLed> getDZLedList(@Param("shipmentId") Long shipmentId);
}
